/* 1.引入文件 */
import axios from 'axios'        //引入 axios库
import qs from 'qs'              //引入 node中自带的qs模块（数据格式转换）
import context from '../main.js'
/* 2.全局默认配置 */
let baseURL = 'http://192.168.41.137:9491/'
let jwtToken = '';
axios.defaults.headers.common['Authorization'] = jwtToken;
// 判断开发环境（一般用于本地代理）
if (process.env.NODE_ENV === 'development') { // 开发环境
    baseURL = '/api'    // 你设置的本地代理请求（跨域代理），下文会详细介绍怎么进行跨域代理
} else {                                      // 编译环境
    if (process.env.type === 'test') {        // 测试环境
        baseURL = 'http://192.168.41.137:9491/'
    } else {                                  // 正式环境
        baseURL = 'http://192.168.41.137:9491/'
    }
}
// 配置axios的属性
axios.defaults.timeout = 6000;    // 请求超时时间1分钟                  
axios.defaults.baseURL =baseURL; // 你的接口地址 
axios.defaults.responseType="json";
axios.defaults.withCredentials=false;  //是否允许带cookie这些
 

const Axios = axios.create({
	baseURL:baseURL , 		      // 后台服务地址
	timeout: 60000, 		      // 请求超时时间1分钟
	responseType: "json",
	withCredentials: false    // 是否允许带cookie这些
});
 
/* 3.设置拦截器 */  
/*如果不是用创建实例的方式配置，那么下面的Axios都要换成axios,也就是文件开头你用import引入axios
时定义的变量*/
Axios.interceptors.request.use((config) => {
    let jwtToken = window.sessionStorage.getItem('jwtToken');
    if (jwtToken&&jwtToken!=null) {
	    config.headers["Authorization"] ='Bearer'+" "+jwtToken;
    }else{
      context.$router.push({ path: '/' })
      // alert('请重新登录')
    }
    // 发送请求前进行拦截
    //  可在此处配置请求头信息
	// config.headers["appkey"] ="...";
 	if (config.method == "post") {
  /*数据转换: axios post方式默认是json格式提交数据，如果使用application/x-www-form-urlencoded数据格式提交，
  要用qs.stringify()进行转换,个人建议不在拦截器中全局配置，因为不够灵活，还有一点是，如果
设置了重新请求的配置，那么重新请求时，请求体中的config里面的传参就会被再次进行qs.stringify()转
换，会使得参数丢失，造成请求失败。*/
 		config.data = qs.stringify(config.data)
 	}
	return config;
  },(error) =>{
    //console.log("错误的传参", 'fail');
    return Promise.reject(error)
  })
Axios.interceptors.response.use((res) =>{
//    请求响应后拦截
    

    if(res.data.code == 200){                       // 对响应数据做些事
        return Promise.resolve(res)
    }else if(res.data.code == "000"){
      alert('暂无权限');
      return;
    }else if(res.data.code == "300"){
      alert('暂无权限');
      return;
    }
    // else if(res.data.code == "200"){
    //   return res;
    // }
    return res;

    // else if(res.data.code == "302"){
    //   context.$router.push({ path: '/' })
    //   return;
    // }
 }, (error) => {
    console.log(error);
   //alert("网络异常!") 404等问题可以在这里处理
   return Promise.reject(error)
 })
export default {Axios,baseURL}
